package com.diy.sigmund.program;

import org.junit.Test;

import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

/**
 * @author ylm-sigmund
 * @since 2023/4/5 13:03
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    // public static void main(String[] args) {//70,
    //     Scanner in = new Scanner(System.in);
    //     // 注意 hasNext 和 hasNextLine 的区别
    //     while (in.hasNextLine()) { // 注意 while 处理多个 case
    //         String a=in.nextLine();
    //         // 1 1 0 1 2 1 0
    //         int max=0;
    //         String[] arr = a.replaceAll(" ", "").split("2");
    //         for(int i=0;i<arr.length;i++){
    //             String tmp = arr[i].replaceAll("0", "");
    //             if (arr[i].length()-tmp.length()==1){
    //                 max=Math.max(max, tmp.length());
    //             }
    //         }
    //         System.out.println(max);
    //     }
    // }
    // @Test
    // public void test1(){//连续老员工
    //     String a="1 1 0 1 2 1 0";
    //     // 1 1 0 1 2 1 0
    //     int max=0;
    //     String[] arr = a.replaceAll(" ", "").split("2");
    //     for(int i=0;i<arr.length;i++){
    //         String tmp = arr[i].replaceAll("0", "");
    //         if (arr[i].length()-tmp.length()==1){
    //             max=Math.max(max, tmp.length());
    //         }
    //     }
    //     System.out.println(max);
    // }
    // @Test
    // public void test1() {//85%
    //     String a = "1 1 0 1 2 1 0";//3
    //     a= "1 1 0 1 1 0 1 2 1 0";
    //     a= "0 1 0";
    //     int max = 0;
    //     String[] arr = a.replaceAll(" ", "").split("2");
    //     for (int i = 0; i < arr.length; i++) {
    //         String tmp = arr[i];
    //         // 110110101101
    //         // 下标：2,5,7,10
    //         List<Integer> list = new ArrayList<>();
    //         for (int j = 0; j < tmp.length(); j++) {
    //             if (tmp.charAt(j) == '0') {
    //                 list.add(j);
    //             }
    //         }
    //         if (list.size() == 0) {
    //             max = Math.max(max, 0);
    //         }
    //         if (list.size() == 1) {
    //             max = Math.max(max, tmp.length() - 1);
    //         }
    //         if (list.size() > 1) {
    //             if (!tmp.startsWith("0")) {
    //                 max = Math.max(max, tmp.substring(0, list.get(1)).replace("0", "").length());
    //             }else {
    //                 max = Math.max(max, tmp.substring(1, list.get(1)).replace("0", "").length());
    //             }
    //             for (int k = 0; k < list.size()-3; k++) {
    //                 if (k==list.size()-1){
    //                     max = Math.max(max, tmp.substring(list.get(k)).replace("0", "").length()-2);
    //                 }else {
    //                     max = Math.max(max, tmp.substring(list.get(k), list.get(k + 2)).replace("0", "").length()-2);
    //                 }
    //             }
    //         }
    //     }
    //     System.out.println(max);
    // }

    // public static void main(String[] args) {
    //     Scanner in = new Scanner(System.in);
    //     // 注意 hasNext 和 hasNextLine 的区别
    //     while (in.hasNextLine()) { // 注意 while 处理多个 case
    //         String a = in.nextLine();
    //         int n = Integer.parseInt(in.nextLine());
    //         int max = 0;
    //         for (int i = 0; i < a.length() - n - 1; i++) {
    //             String tmp = a.substring(i, n);
    //             Map<Character, Integer> map = new HashMap<>();
    //             for (char ch : tmp.toCharArray()) {
    //                 map.put(ch, map.getOrDefault(ch, 0) + 1);
    //             }
    //             max = Collections.max(map.values());
    //         }
    //         System.out.println(max);
    //     }
    // }

    // @Test
    // public void test2() {//100%
    //     // 0 1 2 1
    //     String a = "0 1 ".replaceAll(" ", "");
    //     int n = Integer.parseInt("3");
    //     int max = 0;
    //     if (a.length() < n) {
    //         max = getMax(a, max);
    //     }
    //     for (int i = 0; i <= a.length() - n; i++) {
    //         String tmp = a.substring(i, i + n);
    //         max = getMax(tmp, max);
    //     }
    //     System.out.println(max);
    // }
    //
    // private int getMax(String a, int max) {
    //     Map<Character, Integer> map = new HashMap<>();
    //     for (char ch : a.toCharArray()) {
    //         map.put(ch, map.getOrDefault(ch, 0) + 1);
    //     }
    //     max = Math.max(max, Collections.max(map.values()));
    //     return max;
    // }

    // public static void main(String[] args) {
    //     Scanner in = new Scanner(System.in);
    //     // 注意 hasNext 和 hasNextLine 的区别
    //     while (in.hasNextInt()) { // 注意 while 处理多个 case
    //         int a = in.nextInt();
    //         int b = in.nextInt();
    //         System.out.println(a + b);
    //     }
    // }
    //
    @Test
    public void test3() {//5.26%
        // 删重复值（保留2个）的过程中去找最大值
        // 大的留在前，小的留在后
        // String replace = "5445795045".replace("5", "");//447904
        // String replace = "5445795045".replaceFirst("5", "");//445795045

        // String a = "5445795045";
        String a = "34533";
        Map<Integer, Integer> map = new TreeMap<>();
        for (char ch : a.toCharArray()) {
            Integer key = Integer.parseInt(String.valueOf(ch));
            map.put(key, map.getOrDefault(key, 0) + 1);
        }
        Map<Integer, Integer> duplicateMap = new TreeMap<>();
        for (Integer key : map.keySet()) {
            Integer value = map.get(key);
            if (value > 2) {
                duplicateMap.put(key, value);
            }
        }

        int max=0;
        if (duplicateMap.size()==1){
            int duplicateValue=0;
            for (Integer integer : duplicateMap.keySet()) {
                duplicateValue=integer;
            }
            // 删除一位。取max
            List<Character> collect = a.chars().mapToObj(e -> (char) e).collect(Collectors.toList());
            for (int i = 0; i < collect.size(); i++) {
                if (String.valueOf(collect.get(i)).equals(String.valueOf(duplicateValue))){
                    collect.remove(i);
                    break;
                }
            }
            StringBuilder sb = new StringBuilder();
            for (Character character : collect) {
                sb.append(String.valueOf(character));
            }
            System.out.println(Integer.parseInt(sb.toString()));
        }

        String replace = "5445795045".replaceFirst("4", "");//545795045
        System.out.println(replace);
    }
}

